package sury.web.controller.back;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import sury.biz.service.GoodsService;
import sury.common.result.Result;
import sury.dal.entity.GoodsEntity;

import java.util.List;

/**
 * 后端接口-商品
 */
//TODO:库存和规格
@RestController
@Slf4j
@RequestMapping("/back/goods")
public class GoodsController {
    @Autowired
    private GoodsService goodsService;

    /**
     * 根据id查询商品
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public Result queryGoodsById(@PathVariable("id") Long id){
        return Result.success(goodsService.getById(id));
    }

    /**
     * 分页查询商品
     * @param current
     * @param size
     * @param name
     * @return
     * TODO:返回VO而不是Entity，不需要返回description，img仅返回主图。
     */
    @GetMapping("/page-query")
    public Result pageGoods(@RequestParam(value = "current",defaultValue = "1") Long current,
                            @RequestParam(value = "size",defaultValue = "10") Long size,
                            @RequestParam(value = "name",required = false) String name){
        Page<GoodsEntity> page=new Page<>(current,size);
        return Result.success(goodsService.page(page,new QueryWrapper<GoodsEntity>().like(name!=null&&!name.isEmpty(),"name",name)));
    }

    /**
     * 删除商品
     * @param id
     * @return
     * TODO：批量删除商品
     */
    @PostMapping("/delete/{id}")
    public Result deleteGoodsById(@PathVariable("id") Long id){
        goodsService.removeById(id);
        return Result.success();
    }

    /**
     * 批量删除商品
     * @param ids
     * @return
     */
    @PostMapping("/delete")
    public Result deleteGoodsByIds(@RequestParam("ids") List<Long> ids){
        goodsService.removeByIds(ids);
        return Result.success();
    }

    /**
     * 保存或修改商品
     * @param goodsEntity
     * @return
     * TODO:1、img和description是多图，多个String拼接的（如逗号分割），需要对string进行处理；2、多图处理完后，还需要对查询接口进行处理，img仅返回第一张图（主图）
     * TODO:前端做限制，销量不能修改。新建商品时不能传入id，更新商品时必须传入id
     */
    @PostMapping("/update")
    public Result saveOrUpdateGoods(@RequestBody GoodsEntity goodsEntity){
        goodsService.saveOrUpdate(goodsEntity);
        return Result.success();
    }

}
